iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Mobile Development

Swift30天:從語法到觀念,告訴你在踏入實作前最好弄清楚的那些事系列 第 11

# Day11--枚舉:讓你「有秩序」的管理「有順序」的項目

  • 分享至 

  • xImage
  •  

枚舉

枚舉作為一種通用型的相關值,枚舉的型態可以如下,就以形式來說,枚舉通常都是一組一組的,在下面的例子中,我們可以知道在Week這個例子裡,枚舉裡的舉例是有順序性的;在過去的一些文章也曾指出,枚舉可以很有效用的被使用在排序一些可能有順序的資料中,或許下面這個例子是一個不錯的示範:

enum Week{
    case mon
    case tue
    case wed
    case thu
    case fri
    case sat
    case sun
}

也同時可以讓多個枚舉的內容出現在同一行中,如下:

enum Week{
    case mon,tue,wed,thu,fri,sat,sun
}

而每一個枚舉內部的case都具有一個默認的值,如果在沒有設定的情況下,枚舉case的值應該是這樣:

enum Week{
    case mon = 0,tue,wed,thu,fri,sat,sun
}

通常第一個case的順序值都是0,而假設今天你因為需要可能需要指定這個enum內部的case帶有的值,那你可以這樣做:

enum Week{
    case mon = 1,tue,wed,thu,fri,sat,sun
}

這樣就會讓所有的case的順序值就是從1開始,依此類推。
如果你今天要叫出某一個case,你這樣做可以讓week這個枚舉基於第一個case被設置於1的基礎下,然後讀取出你給予它的值:

Week.init(rawValue:6)
//這個時候打印出來的就會是sat

迭代枚舉

枚舉還有一個很好使用的案例,叫做迭代,下面來舉個例子

enum Week:CaseIterable{
    case mon,tue,wed,thu,fri,sat,sun
}

let weekNumber = Week.allCase.count
print(weekNumber)
//可以得出7

allCase這個關鍵字的意義就是把所有的case都集合起來,讓我們可以藉由訪問等方式對它進行使用。

Switch Case與枚舉值

switch case跟枚舉的共同使用算是很常見的組合,我們可以將單個枚舉值與switch case匹配

var weekDay = Week.mon
switch weekDay{
case .mon:
    print("Monday")
case .tue:
    print("Tuesday")
case .wed:
    print("Wednesday")
case .thu:
    print("Thursday")
case .fri:
    print("Friday")
case .sat:
    print("Saturday")
case .sun:
    print("Sunday")
}

在上述的例子中,可以這樣解釋:
在符合weekDay的某個元素的case之下,就打印出該case所設置的結果。

枚舉的應用其實蠻廣泛的,假若在實作中涉及了有順序的選項排列的邏輯時,不妨考慮看看枚舉的使用吧!

tags: 鐵人賽

上一篇
# Day10--只有藍圖是不夠的!我們要來變出一個實體!
下一篇
# Day12--我們用協定說好要這樣做了,你一定得OK!
系列文
Swift30天:從語法到觀念,告訴你在踏入實作前最好弄清楚的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言